# 编写读取登陆数据文件的函数
import json


def read_login_data(filename):
    # filename: 外部文件的文件路径
    # 打开文件
    # with open() 打开  mode='r' 只读的方式
    with open(filename, mode='r', encoding='utf-8') as f:
        # 把文件内容转化成json数据格式
        # json.load() 用json的格式读
        jsonData = json.load(f)
        # 把json数据（列表字典数据）转化成列表元组数据
        result_list = list()  # 空列表 只能定义在for循环外面
        for per_login_data in jsonData:
            # result_list.append 追加到列表中  tuple()转化成元组  per_login_data.values() 拿到这个文件的值
            result_list.append(tuple(per_login_data.values()))  # 将每一组字典数据的value转化成元组并添加到空列表当中，完成列表字典转化为列表元组的操作

        print("转化为列表元组的数据是：", result_list)
        # 返回结果
        return result_list


# 封装读取多个接口的参数化数据
def read_emp_data(filename, key=None):
    """
    :param filename: 外部传入的数据文件路径
    :param key: 数据文件中的每个接口的key（query_emp_list，add_emp，query_emp，modify_emp，delete_emp）
    :return:
    """
    with open(filename, mode='r', encoding='utf-8') as f:
        # 把文件内容转化成json数据格式
        jsonData = json.load(f)
        # 把json数据（列表字典数据）转化成列表元组数据
        result_list = list()  # 空列表
        for per_emp_data in jsonData:
            # 这个地方要配合json文件来理解,这个函数读取的json文件是多个接口的数据,
            # 在for循环遍历一次文件后,得到的per_emp_data是一个字典{}
            # 里面有query_emp_list，add_emp，query_emp，modify_emp，delete_emp 这五个键
            # per_emp_data.get(key) 就等于我们调用了字典中 对应的键的值 key是外部传来的键
            temp_data = per_emp_data.get(key)
            result_list.append(tuple(temp_data.values()))  # 将每一组字典数据的value转化成元组并添加到空列表当中，完成列表字典转化为列表元组的操作

        print(f"员工模块{key}转化为列表元组的数据是：", result_list)
        # 返回结果
        return result_list


if __name__ == '__main__':
    # 调试read_login_data
    filename = "./data/login_data.json"
    read_login_data(filename)

    filename = "./data/emp_data.json"
    # 调试read_emp_data
    # 例如我们传入的key是 add_emp
    read_emp_data(filename, "add_emp")
